home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / strlibs.zip / MEMRCHR.ASM < prev    next >
Assembly Source File  |  1993-01-04  |  1KB  |  62 lines

  1. ;       Static Name Aliases
  2. ;
  3.         TITLE   memrchr
  4. ;       NAME    memrchr.C
  5.  
  6. ;   memrchr(src, chr, len)
  7. ;   searches the memory area pointed to by src extending for len bytes,
  8. ;   looking for an occurrence of the byte value chr.  It returns NULL
  9. ;   if there is no such occurrence.  Otherwise it returns a pointer to
  10. ;   the LAST such occurrence.
  11. ;
  12.  
  13.         .287
  14. _TEXT   SEGMENT  BYTE PUBLIC 'CODE'
  15. _TEXT   ENDS
  16. _DATA   SEGMENT  WORD PUBLIC 'DATA'
  17. _DATA   ENDS
  18. CONST   SEGMENT  WORD PUBLIC 'CONST'
  19. CONST   ENDS
  20. _BSS    SEGMENT  WORD PUBLIC 'BSS'
  21. _BSS    ENDS
  22. DGROUP  GROUP   CONST,  _BSS,   _DATA
  23.         ASSUME  CS: _TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP
  24. EXTRN   __chkstk:NEAR
  25. _TEXT      SEGMENT
  26. ; Line 19
  27.         PUBLIC  _memrchr
  28. _memrchr        PROC NEAR
  29.         push    bp
  30.         mov     bp,sp
  31.         push    di
  32.         push    si
  33.  
  34. ;       src = 4
  35. ;       chr = 6
  36. ;       len = 8
  37.  
  38.         mov     di,[bp+4]       ;src
  39.         mov     cx,[bp+8]       ;len
  40.         mov     al,[bp+6]       ;chr
  41.         add     di,cx
  42.         dec     di
  43.         std
  44.         repnz   scasb
  45.         jcxz    no_find
  46.         mov     ax,di
  47.         inc     ax
  48.         jmp     short cleanup
  49. no_find:
  50.         xor     ax,ax
  51. cleanup:
  52.         cld
  53.         pop     si
  54.         pop     di
  55.         mov     sp,bp
  56.         pop     bp
  57.         ret
  58.  
  59. _memrchr        ENDP
  60. _TEXT   ENDS
  61. END
  62.